<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="URwMm" id="URwMm"><span data-lake-id="u69fd1079" id="u69fd1079">典型回答</span></h1>
  <p data-lake-id="u2f2f360e" id="u2f2f360e"><br></p>
  <p data-lake-id="u81496421" id="u81496421"><span data-lake-id="uee3b7d89" id="uee3b7d89">通常我们在使用RPC服务的时候，都是需要依赖别人提供的API的，这样我们就可以面向接口编程，就像调用本地代码一样直接调用接口方法就行了。在实际调用中，会通过代理的方式进行远程调用。</span></p>
  <p data-lake-id="ud264b4fc" id="ud264b4fc"><span data-lake-id="u9263fc94" id="u9263fc94">​</span><br></p>
  <p data-lake-id="uf45ea24d" id="uf45ea24d"><span data-lake-id="u69f5ee5a" id="u69f5ee5a">但是，有时候如果我们没有别人提供的API的话，怎么办呢，这时候就需要泛化调用了。</span></p>
  <p data-lake-id="u1ebc754f" id="u1ebc754f"><br></p>
  <p data-lake-id="u48dd4375" id="u48dd4375"><span data-lake-id="ud539376f" id="ud539376f">泛化调用是指在调用方没有服务方提供的API（SDK）的情况下，对服务方进行调用，并且可以拿到调用结果。</span></p>
  <p data-lake-id="u6bdce460" id="u6bdce460"><span data-lake-id="u512bfee8" id="u512bfee8">​</span><br></p>
  <p data-lake-id="uf3b4dc19" id="uf3b4dc19"><span data-lake-id="ufd1932f0" id="ufd1932f0">一般在测试集成工具、网关服务中用泛化调用比较多。</span></p>
  <p data-lake-id="u264ea5f0" id="u264ea5f0"><span data-lake-id="u7f8551c5" id="u7f8551c5">​</span><br></p>
  <p data-lake-id="u0ffba130" id="u0ffba130"><span data-lake-id="u22dcb99a" id="u22dcb99a">在Dubbo中，可以通过GenericService 调用所有服务实现：</span></p>
  <p data-lake-id="u6ba1438c" id="u6ba1438c"><span data-lake-id="u32e0679e" id="u32e0679e">​</span><br></p>
  <pre lang="java"><code>
&lt;dubbo:reference id="testService" interface="com.hollis.TestService" generic="true" /&gt;
    

GenericService barService = (GenericService) applicationContext.getBean("testService");
Object result = barService.$invoke("sayHello", new String[] { "java.lang.String" }, new Object[] { "World" });
</code></pre>
  <p data-lake-id="u477bc001" id="u477bc001"><span data-lake-id="u797cfa8c" id="u797cfa8c">​</span><br></p>
  <p data-lake-id="uc9203223" id="uc9203223"><span data-lake-id="uab2f3c63" id="uab2f3c63">通过使用GenericService服务即可实现对com.hollis.TestService服务实现泛化调用了，整个过程都不需要对应的API，只需要知道这个服务的全路径名就行了。</span></p>
 </body>
</html>